package com.wx.mall.goods.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wx.mall.common.vo.goods.BrandBaseVo;
import com.wx.mall.goods.entity.Brand;
import com.wx.mall.goods.vo.req.BrandBatchReqVO;
import com.wx.mall.goods.vo.req.BrandPageReqVO;
import com.wx.mall.goods.vo.req.BrandReqVO;
import com.wx.mall.goods.vo.req.PageReqVO;
import com.wx.mall.goods.vo.resp.BrandRespVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  品牌服务类
 * </p>
 *
 * @author ljl
 * @since 2020-03-17
 */
public interface IBrandService extends IService<Brand> {
    /**
     * 分页查询所有未删数据
     *
     * @param vo 分页vo
     * @return
     */
    Page<Brand> pageInfo(BrandPageReqVO vo);

    /**
     * 查询所有未删数据
     *
     * @return
     */
    List<BrandRespVO> availableInfos();

    /**
     * 查询所有未删数据
     *
     * @return
     */
    List<BrandBaseVo> listBaseAvailable();

    /**
     * 分页查询所有数据
     * @param vo
     * @return
     */
    Page<Brand> pageList(BrandPageReqVO vo);

    /**
     * 根据关键字（名字）分页查询
     * @param vo
     * @return
     */
    Page<Brand> pageMatch(BrandPageReqVO vo);

    /**
     * 生成首字母（当前页所有首字母为空字符串的品牌）
     *
     * @param vo 分页vo
     * @return
     */
    Page<Brand> initialGenerator(PageReqVO vo);

    /**
     * 根据id软删除数据
     */
    void softDeleteById(Integer id);
    /**
     * 根据ids软删除数据
     */
    void batchOperation (BrandBatchReqVO vo);

    /**
     * 根据id获取单条数据
     */
    Brand findById(Integer id);

    /**
     * 更新id数据
     */
    void updateById(BrandReqVO vo);

    /**
     * 增加新数据
     */
    void add(BrandReqVO vo);

    /**
     * logo图标上传
     */
    Map<String, String> uploadLogo(MultipartFile file, String name);
}
